package com.sybil.spa.dominio;

import java.io.Serializable;
import java.util.List;
import javax.persistence.Basic;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import javax.xml.bind.annotation.XmlTransient;

@Entity
@Table(name = "SPA_ANTICIPOS")
public class Anticipo implements Serializable {

   private static final long serialVersionUID = 1L;
   private Integer numero;
   private String descripcion;
   private String usuarioCreo;
   private String usuarioModif;
   private List<AnticipoReembolso> reembolsos;

   public Anticipo() {
   }

   public Anticipo(Integer antiNumero) {
      this.numero = antiNumero;
   }

   public Anticipo(Integer numero, String descripcion, String usuarioCreo) {
      this.numero = numero;
      this.descripcion = descripcion;
      this.usuarioCreo = usuarioCreo;
   }

   @Id
   @Basic(optional = false)
   @NotNull
   @Column(name = "ANTI_NUMERO")
   public Integer getNumero() {
      return numero;
   }

   @Basic(optional = false)
   @NotNull
   @Size(min = 1, max = 100)
   @Column(name = "ANTI_DESCRIPCION")
   public String getAntiDescripcion() {
      return descripcion;
   }

   @Basic(optional = false)
   @Column(name = "ANTI_USUARIO_CREO")
   public String getUsuarioCreo() {
      return usuarioCreo;
   }

   @Column(name = "ANTI_USUARIO_MODIF")
   public String getUsuarioModif() {
      return usuarioModif;
   }

   @OneToMany(cascade = CascadeType.ALL, mappedBy = "anticipo")
   @XmlTransient
   public List<AnticipoReembolso> getReembolsos() {
      return reembolsos;
   }

   public void setNumero(Integer numero) {
      this.numero = numero;
   }

   public void setAntiDescripcion(String antiDescripcion) {
      this.descripcion = antiDescripcion;
   }

   public void setUsuarioCreo(String usuarioCreo) {
      this.usuarioCreo = usuarioCreo;
   }

   public void setUsuarioModif(String usuarioModif) {
      this.usuarioModif = usuarioModif;
   }

   public void setReembolsos(List<AnticipoReembolso> reembolsos) {
      this.reembolsos = reembolsos;
   }

   @Override
   public int hashCode() {
      int hash = 0;
      hash += (numero != null ? numero.hashCode() : 0);
      return hash;
   }

   @Override
   public boolean equals(Object object) {
      if (!(object instanceof Anticipo)) {
         return false;
      }
      Anticipo other = (Anticipo) object;
      if ((this.numero == null && other.numero != null) || (this.numero != null && !this.numero.equals(other.numero))) {
         return false;
      }
      return true;
   }

   @Override
   public String toString() {
      return "Anticipo[ numero=" + numero + " ]";
   }
}
